package com.oa.hyperion.repository.assets;


import com.oa.hyperion.entity.assets.AssetsDetail;
import com.oa.hyperion.entity.assets.AssetsRepair;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 资产报修
 * author yuanchongwei
 * date 2022-1-18
 */
public interface AssetsRepairMapper {
    /**
     * 当资产报修时，新增报修信息
     * @param assetsRepair
     */
    @Insert("insert into " +
            "assets_repair(asset_id,summary,detail,result,applyer,responser) " +
            "values(#{assetId},#{summary},#{detail},#{result},#{applyer},#{responser})")
    @Options(useGeneratedKeys = true,keyColumn = "id",keyProperty = "id")
    public void insert(AssetsRepair assetsRepair);

    /**
     * 维修完成后，更新维修结果
     * @param id 主键
     * @param result 维修结果
     */
    @Update("update assets_repair set result=#{result} where id=#{id}")
    public boolean update(@Param("id") int id, @Param("result") String result);

    /**
     * 查询所有报修信息
     * @return
     */
    @Select("select * from assets_repair")
    public List<AssetsRepair> getAllRepairInfo();

    /**
     * 查询
     * 根据资产id查询资产报修信息
     * @param asset_id 资产id
     * @return 资产报修信息
     */
    @Select("select * from assets_repair where asset_id=#{assetId}")
    public List<AssetsRepair> getAssetsRepairByAssetId(int asset_id);

    /**
     * 查询
     * 根据维修结果查询资产报修信息
     * @param result 维修结果
     * @return 资产报修信息
     */
    @Select("select * from assets_repair where result=#{result}")
    public List<AssetsRepair> getAssetsRepairByResult(int result);

    /**
     * 根据资产id查询最新的维修结果
     * @param assetId 维修结果
     * @return 资产报修信息
     */
    @Select("select result from assets_repair where asset_id=#{assetId} order by id desc limit 1")
    public String getAssetsRepairByResultLatest(int assetId);

    /**
     * 查询
     * 根据维修申请人查询资产报修信息
     * @param applyer 维修申请人
     * @return 资产报修信息
     */
    @Select("select * from assets_repair where applyer=#{applyer}")
    public List<AssetsRepair> getAssetsRepairByApplyer(String applyer);

    /**
     * 查询
     * 根据维修责任人查询资产报修信息
     * @param responser 维修责任人
     * @return 资产报修信息
     */
    @Select("select * from assets_repair where responser=#{responser}")
    public List<AssetsRepair> getAssetsRepairByResponser(int responser);

}
